package com.jr.controller;

import com.jr.service.ReportService;
import com.jr.vo.ReportVo;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 报表控制器
 * 用于处理报表相关的API请求
 */
@RestController
@RequestMapping("/api/report")
public class ReportController {

    @Resource
    private ReportService reportService;

    /**
     * 日期格式化工具
     */
    private final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");

    /**
     * 生成报表数据
     * @param status 报表类型，0-日报，1-周报，2-月报，3-季报，4-年报
     * @param date 传入日期，格式为yyyy-MM-dd
     * @return 包含报表数据的ReportVo对象
     */
    @GetMapping("/generate")
    public ReportVo generateReport(
            @RequestParam Integer status,
            @RequestParam String date) {

        try {
            // 解析日期字符串为Date对象
            Date reportDate = dateFormat.parse(date);

            // 创建ReportVo对象并设置参数
            ReportVo reportVo = new ReportVo();
            reportVo.setStatus(status);
            reportVo.setDate(reportDate);

            // 调用Service层方法生成报表
            ReportVo result = reportService.generateReport(reportVo);

            return result;
        } catch (ParseException e) {
            // 日期格式解析错误，返回空结果
            ReportVo errorResult = new ReportVo();
            errorResult.setStatus(-1); // 设置错误状态码
            errorResult.setDates("日期格式错误，请使用yyyy-MM-dd格式");
            return errorResult;
        }
    }
}